-- CALC_COFFIN_BONUS

-- 计算圣棺的奖励
-- @param user   玩家对象
return function(user)
    -- 获取所有的圣器编号
    local ids = HolyItemsM.getDungeonHolyItems();

    -- 筛选出尚未获得的圣器
    local waitList = {};
    for _, id in pairs(ids) do
        if ItemM.getAmount(user, id) <= 0 and
           not EquipM.isEquiped(id) then
            table.insert(waitList, id);
        end
    end

    local holyId;
    if #waitList == 0 then
        -- 已经获得了所有圣器，替换成氏族纹章
        holyId = 7243;
    else
        -- 随机选取一件圣器
        if #waitList > 1 then
            local function sortIds(id1, id2)
                return id1 < id2;
            end
            table.sort(waitList, sortIds);
        end

        local rand = DungeonM.getRandSeed("CALC_COFFIN_BONUS");
        local index = rand % #waitList + 1;  -- 注意：客户端的下标比服务器大1
        holyId = waitList[index];
    end

    local bonus = {
        {  1, 7241, 20 },
        {  1, 7242, 1 },
        {  1, holyId, 1 },
    };

    return bonus;
end